package com.dragon.aipictures.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dragon.aipictures.domain.dto.request.space.analyze.*;
import com.dragon.aipictures.domain.entity.Picture;
import com.dragon.aipictures.domain.entity.Space;
import com.dragon.aipictures.domain.entity.User;
import com.dragon.aipictures.domain.vo.space.analyze.SpaceCategoryAnalyzeResponse;
import com.dragon.aipictures.domain.vo.space.analyze.SpaceSizeAnalyzeResponse;
import com.dragon.aipictures.domain.vo.space.analyze.SpaceTagAnalyzeResponse;
import com.dragon.aipictures.domain.vo.space.analyze.SpaceUserAnalyzeResponse;

import java.util.List;

/**
 * @author 李鱼皮
 * @createDate 2024-12-18 19:53:34
 */
public interface spaceAnalyzeService extends IService<Space> {

    /**
     * 获取空间使用情况分析
     *
     * @param spaceUsageAnalyzeRequest
     * @param loginUser
     * @return
     */
    SpaceUsageAnalyzeResponse getSpaceUsageAnalyze(SpaceUsageAnalyzeRequest spaceUsageAnalyzeRequest, User loginUser);

    List<SpaceCategoryAnalyzeResponse> getSpaceCategoryAnalyze(SpaceCategoryAnalyzeRequest spaceCategoryAnalyzeRequest, User loginUser);

    List<SpaceTagAnalyzeResponse> getSpaceTagAnalyze(SpaceTagAnalyzeRequest spaceTagAnalyzeRequest, User loginUser);

    List<SpaceSizeAnalyzeResponse> getSpaceSizeAnalyze(SpaceSizeAnalyzeRequest spaceSizeAnalyzeRequest, User loginUser);

    List<SpaceUserAnalyzeResponse> getSpaceUserAnalyze(SpaceUserAnalyzeRequest spaceUserAnalyzeRequest, User loginUser);

    List<Space> getSpaceRankAnalyze(SpaceRankAnalyzeRequest spaceRankAnalyzeRequest, User loginUser);

    void checkSpaceAnalyzeAuth(SpaceAnalyzeRequest spaceAnalyzeRequest, User loginUser);

    void fillAnalyzeQueryWrapper(SpaceAnalyzeRequest spaceAnalyzeRequest, QueryWrapper<Picture> queryWrapper);
}
